using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SilkSharp
{
	/*
	 * Class for controlling encoder operation
	 *
	 * @author Jing Dai
	 * @author Dingxin Xu
	 */
	public class SKP_SILK_SDK_EncControlStruct
	{
		/*
		 * (Input) Input signal sampling rate in Hertz; 8000/12000/16000/24000.
		 */
		public int API_sampleRate;

		/*
		 * (Input) Maximum internal sampling rate in Hertz; 8000/12000/16000/24000.
		 */
		public int maxInternalSampleRate;

		/*
		 * (Input) Number of samples per packet; must be equivalent of 20, 40, 60, 80 or 100 ms.
		 */
		public int packetSize;

		/*
		 * (Input) Bitrate during active speech in bits/second; internally limited.
		 */
		public int bitRate;

		/*
		 * (Inpupt) Uplink packet loss in percent (0-100).
		 */
		public int packetLossPercentage;

		/*
		 * (Input) Complexity mode; 0 is lowest; 1 is medium and 2 is highest complexity.
		 */
		public int complexity;

		/*
		 * (Input) Flag to enable in-band Forward Error Correction (FEC); 0/1
		 */
		public int useInBandFEC;

		/*
		 * (Input) Flag to enable discontinuous transmission (DTX); 0/1
		 */
		public int useDTX;
	}

	/*
	 * Class for controlling decoder operation and reading decoder status.
	 * @author Jing Dai
	 * @author Dingxin Xu
	 */
	public class SKP_SILK_SDK_DecControlStruct
	{
		/*
		 * (Input) Output signal sampling rate in Hertz; 8000/12000/16000/24000.
		 */
		public int API_sampleRate;

		/*
		 * (Output) Number of samples per frame.
		 */
		public int frameSize;

		/*
		 * (Output) Frames per packet 1, 2, 3, 4, 5.
		 */
		public int framesPerPacket;

		/*
		 * (Output) Flag to indicate that the decoder has remaining payloads internally.
		 */
		public int moreInternalDecoderFrames;

		/*
		 * (Output) Distance between main payload and redundant payload in packets.
		 */
		public int inBandFECOffset;
	}
}
